/*============================================================================*/
/*                          The Freescale Cup                                 */
/*============================================================================*/
/*                        OBJECT SPECIFICATION                                */
/*============================================================================*
* C Source:         apptask.c%
* %version:         1 %
* %created_by:      Continental %
* %date_created:     %
*=============================================================================*/
/* DESCRIPTION :  All tasks are called here                                   */
/*============================================================================*/
/* FUNCTION COMMENT : Add here your tasks, inside a periodic task             */
/* according to the desired execution period                                  */
/*                                                                            */
/*============================================================================*/
/*                               OBJECT HISTORY                               */
/*============================================================================*/
/*  REVISION |   DATE      |                               |      AUTHOR      */
/*----------------------------------------------------------------------------*/
/*  1.0      | 22/08/2011  |  Revision                     | Continental      */
/*                                                                            */
/*============================================================================*/

/* Includes */
/* ------------------- */
/* Common declarations */
/* ------------------- */
#include "apptask.h"

/*       SW API    */
/* --------------- */
#include "APPLeds.h"
#include "APPControl.h"
#include "APPMotors.h"
#include "APPCamera.h"


/* Exported functions prototypes */
/* ----------------------------- */
void apptask_20ms_Camera(void);
void apptask_20ms_Control(void);
void apptask_20ms_Servo(void);
void apptask_3ms_LeftMotor(void);
void apptask_3ms_RightMotor(void);
void apptask_EXT0_Interrupt(void);
void apptask_EXT1_Interrupt(void);


/*======================================================*/ 
/* Definition of ROM constants                          */
/*======================================================*/ 
/* BYTE constants */
                       

/* WORD constants */ 
               

/* LONG and STRUCTURE constants */


/*======================================================*/ 
/* Definition of RAM variables                          */
/*======================================================*/ 

/*---------------------------------------*/
/* initialized and cleared RAM (default) */
/*---------------------------------------*/
/* BYTES */
 
/* WORDS */

extern T_UBYTE rub_Side;
extern T_UWORD ruw_Volante;



/* LONGS and STRUCTURES */
                                       


/*---------------------------------------*/
/* non initialized RAM                   */
/*---------------------------------------*/
/* non initialized BYTES */

/* non initialized WORDS */


/* non initialized LONGS and STRUCTURES */                                       

/*-----------------------------*/
/* controlled RAM              */
/*-----------------------------*/
/* controlled RAM BYTES */          

/* controlled RAM WORDS */                          

/* controlled RAM LONGS */                          

/* controlled RAM STRUCTURES */

/* Instrumentation variables */

/*======================================================*/ 
/* close variable declaration sections                  */
/*======================================================*/

 
  /**************************************************************
 *  Name                 : apptask_20ms_Camera
 *	ID					 : TASK_20MS_Camera,
 *  Description          :
 *  Parameters           :  none
 *  Return               :	none
 *  Critical/explanation :  no
 **************************************************************/
 void apptask_20ms_Camera(void)
 {
 
   APPCamera_Pos(); //Programa para la posicion
   APPCamera_Vel(); //Programa para la velocidad
 }
 
 
  /**************************************************************
 *  Name                 : apptask_20ms_Control
 *	ID					 :  TASK_20MS_Control
 *  Description          :  Main control of the car
 *  Parameters           :  none
 *  Return               :	none
 *  Critical/explanation :  no
 **************************************************************/
 void apptask_20ms_Control(void)
 {
  	APPContro_PID();
  	APPControl_Kinematics();
 }
 
  
  /**************************************************************
 *  Name                 : apptask_20ms_Servo
 *	ID					 :  TASK_20MS_Servo
 *  Description          :  
 *  Parameters           :  none
 *  Return               :	none
 *  Critical/explanation :  no
 **************************************************************/
 
 void apptask_20ms_Servo(void)
 {
   	pwm_servo_Motor(ruw_Volante,rub_Side);
 }
 
 
 
 /**************************************************************
 *  Name                 : 	apptask_3ms_LeftMotor
 *	ID					 : 	TASK_3MS_LeftMotor;
 *  Description          :  Left Motor Controller
 *  Parameters           :  none
 *  Return               :	none
 *  Critical/explanation :  no
 **************************************************************/
 void apptask_3ms_LeftMotor(void)
 {
 	APPMotors_LeftMotor_PID();
 }
 

/**************************************************************
 *  Name                 : 	apptask_3ms_RightMotor
 *	ID					 : 	TASK_3MS_RightMotor;
 *  Description          :	Right Motor Controller
 *  Parameters           :  none
 *  Return               :	none
 *  Critical/explanation :  no
 **************************************************************/
 void apptask_3ms_RightMotor(void)
 {
 	APPMotors_RightMotor_PID();
 }
 
 /**************************************************************
 *  Name                 : apptask_EXT0_Interrupt
 *	ID					 : TASK_EXT0_Interrupt
 *  Description          :
 *  Parameters           :  none
 *  Return               :	none
 *  Critical/explanation :  no
 **************************************************************/
 void apptask_EXT0_Interrupt(void)
 {
 
 }
 
 /**************************************************************
 *  Name                 : apptask_EXT1_Interrup
 *	ID					 : TASK_EXT1_Interrupt
 *  Description          :
 *  Parameters           :  none
 *  Return               :	none
 *  Critical/explanation :  no
 **************************************************************/
 void apptask_EXT1_Interrupt(void)
 {
 
 }